package org.onion.pattern.notify.dingtalk;//package com.xx.xx.businessframework.notify.dingding;
//
//public class Test {
//
//    // 企业凭证，两小时一更新
//    private static String enterpriseToken = "";
//    // 应用凭证
//    private static String appkey = "你的应用AppKey";
//    private static String appsecret = "你的应用AppSecret";
//
//    // 获取token,每两小时失效
//    public static void getToken() {
//        try {
//            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
//            OapiGettokenRequest req = new OapiGettokenRequest();
//            req.setAppkey(appkey);
//            req.setAppsecret(appsecret);
//            req.setHttpMethod("GET");
//            OapiGettokenResponse rsp = client.execute(req);
//            log.info("token:" + rsp.getBody());
//            JSONObject json = JSON.parseObject(rsp.getBody());
//            enterpriseToken = json.getString("access_token");
//        } catch (ApiException e) {
//            e.printStackTrace();
//        }
//    }
//
//    /**
//     * 使用 Token 初始化账号Client
//     *
//     * @return Client
//     * @throws Exception
//     */
//    private static Client createClient() throws Exception {
//        Config config = new Config();
//        config.protocol = "https";
//        config.regionId = "central";
//        return new Client(config);
//    }
//
//    /**
//     * 发送钉钉消息
//     *
//     * @param dingUserId 钉钉用户id
//     * @param content    发送消息内容
//     * @return void
//     */
//    public static void createDingNotify(String dingUserId, String content) throws Exception {
//        if (StringUtils.isBlank(enterpriseToken)) {
//            getToken();
//        }
//        Client client = createClient();
//        BatchSendOTOHeaders batchSendOTOHeaders = new BatchSendOTOHeaders();
//        batchSendOTOHeaders.xAcsDingtalkAccessToken = enterpriseToken;
//        BatchSendOTORequest batchSendOTORequest = new BatchSendOTORequest()
//                .setRobotCode(appkey)//机器人appkey
//                .setUserIds(Arrays.asList(dingUserId))
//                .setMsgKey("officialTextMsg")
//                .setMsgParam("{ \"content\": \"" + content + "\" }");
//        try {
//            client.batchSendOTOWithOptions(batchSendOTORequest, batchSendOTOHeaders, new RuntimeOptions());
//        } catch (TeaException err) {
//            if (!Common.empty(err.code) && !Common.empty(err.message)) {
//                // err 中含有 code 和 message 属性，可帮助开发定位问题
//                log.error(err.code + ":" + err.message);
//                // 企业凭证enterpriseToken不合法导致出错时获取新企业凭证并重试
//                if (err.code.equals("InvalidAuthentication")) {
//                    getToken();
//                    createDingNotify(dingUserId, content);
//                }
//            }
//        } catch (Exception e) {
//            TeaException err = new TeaException(e.getMessage(), e);
//            if (!Common.empty(err.code) && !Common.empty(err.message)) {
//                // err中含有code和message 属性，可帮助开发定位问题
//                log.error(err.code + ":" + err.message);
//            }
//
//        }
//    }
//
//    /**
//     * 发送钉钉消息
//     *
//     * @param phone 用户手机号
//     * @return void
//     */
//    public static String getDingdingUserIdByPhone(String phone) {
//        try {
//            if (StringUtils.isBlank(enterpriseToken)) {
//                getToken();
//            }
//            DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/v2/user/getbymobile");
//            OapiV2UserGetbymobileRequest req = new OapiV2UserGetbymobileRequest();
//            req.setMobile(phone);
//            OapiV2UserGetbymobileResponse rsp = client.execute(req, enterpriseToken);
//            if (rsp != null) {
//                OapiV2UserGetbymobileResponse.UserGetByMobileResponse result = rsp.getResult();
//                return result == null ? null : result.getUserid();
//            }
//        } catch (ApiException e) {
//            log.error(e.getErrMsg(), e);
//        }
//        return null;
//    }
//
//}
